/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * SpeelgoedInvoerScherm.java
 *
 * Created on 1-jan-2010, 13:44:09
 */

package registratiesysteem;

import java.awt.Color;
import java.util.ArrayList;

/**
 *
 * @author Martin
 */
class SpeelgoedInvoerScherm extends javax.swing.JFrame {

    static final int CODE = 0;
    static final int NAAM = 1;
    static final int OMSCHRIJVING = 2;
    static final int AANKOOPDATUM = 3;
    static final int AANKOOPBEDRAG = 4;
    static final int LEEFTIJD_MIN = 5;
    static final int LEEFTIJD_MAX = 6;
    static final int ONDERDELEN = 7;

    /** Creates new form SpeelgoedInvoerScherm */
    SpeelgoedInvoerScherm(BeheerMenu hetParentMenu) {
        initComponents();
        parentMenu = hetParentMenu;
        parentMenu.initDatumVelden(jcbDag, jcbMaand, jcbJaar);
        jComboLeeftijdVan.removeAllItems();
        jComboLeeftijdTot.removeAllItems();
        jComboLeeftijdTot.addItem(null);
        for (int i = 0; i <= 18; ++i) {
            jComboLeeftijdVan.addItem(Integer.toString(i));
            jComboLeeftijdTot.addItem(Integer.toString(i + 1));
        }
        jComboLeeftijdTot.removeItemAt(19);
    }

    void initialiseerInvoerScherm(BeheerMenu.BewerkFunctie hetSoortBewerking) {
        soortBewerking = hetSoortBewerking;
        setVeldenVanuitBeheerMenu();
    }

    void initialiseerInvoerScherm(BeheerMenu.BewerkFunctie hetSoortBewerking, String deSpeelgoedCode) {
        soortBewerking = hetSoortBewerking;
        setVeldenVanuitZoekScherm();
        invoerVeldenVullen(deSpeelgoedCode);
    }

  // Een stuk speelgoed toevoegen aan de database
    public int insertSpeelgoed(Speelgoed stukSpeelgoed) {
        parentMenu.databaseConnectie.prepareStatement("INSERT INTO SPEELGOED "
                + "(code, naam, omschrijving, aankoopdatum, "
                + "aankoopbedrag, minleeftijd, maxleeftijd, onderdelen) "
                + " VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
        parentMenu.databaseConnectie.setString(1,stukSpeelgoed.getCode());
        parentMenu.databaseConnectie.setString(2,stukSpeelgoed.getNaam());
        parentMenu.databaseConnectie.setString(3,stukSpeelgoed.getOmschrijving());
        parentMenu.databaseConnectie.setString(4,stukSpeelgoed.getAankoopdatum());
        parentMenu.databaseConnectie.setFloat(5,stukSpeelgoed.getAankoopbedrag());
        parentMenu.databaseConnectie.setShort(6,stukSpeelgoed.getMinLeeftijd());
        if (stukSpeelgoed.getMaxLeeftijd() > 0)
            parentMenu.databaseConnectie.setShort(7,stukSpeelgoed.getMaxLeeftijd());
        else
            parentMenu.databaseConnectie.setString(7,null);
        parentMenu.databaseConnectie.setShort(8,stukSpeelgoed.getOnderdelen());
        return parentMenu.databaseConnectie.update();
    }

    // Zoek naar de hoogste code binnen een speelgoed categorie in de database
    public int geefSpeelgoedCode(char hetKarakter) {
        ArrayList<ArrayList<String>> resultaat;
        int eenCode = 0;
        int maxCode = 0;

        resultaat = parentMenu.databaseConnectie.query("SELECT code FROM speelgoed where code like \"" + hetKarakter + "%\"");
        if (resultaat != null) {
            for (int i = 0; i < resultaat.size(); ++i) {
                eenCode = Integer.parseInt(resultaat.get(i).get(CODE).substring(1));
                System.out.println(eenCode);
                if (eenCode > maxCode)
                    maxCode = eenCode;
            }
        }
        return maxCode;
    }

    // Selecteer een stuk speelgoed in de database
    public Speelgoed geefSpeelgoed(String deSpeelgoedCode) {
        ArrayList<ArrayList<String>> resultaat;
        Speelgoed stukSpeelgoed = new Speelgoed();

        parentMenu.databaseConnectie.prepareStatement("SELECT * "
                               + "FROM SPEELGOED WHERE code = ?");
        parentMenu.databaseConnectie.setString(1,deSpeelgoedCode);
        resultaat = parentMenu.databaseConnectie.query();
        if (resultaat != null) {
            stukSpeelgoed.setCode(resultaat.get(0).get(CODE));
            stukSpeelgoed.setNaam(resultaat.get(0).get(NAAM));
            stukSpeelgoed.setOmschrijving(resultaat.get(0).get(OMSCHRIJVING));
            stukSpeelgoed.setAankoopdatum(resultaat.get(0).get(AANKOOPDATUM));
            stukSpeelgoed.setAankoopbedrag(Float.parseFloat(resultaat.get(0).get(AANKOOPBEDRAG)));
            stukSpeelgoed.setMinLeeftijd(Short.parseShort(resultaat.get(0).get(LEEFTIJD_MIN)));
            if (resultaat.get(0).get(LEEFTIJD_MAX) != null)
                stukSpeelgoed.setMaxLeeftijd(Short.parseShort(resultaat.get(0).get(LEEFTIJD_MAX)));
            else
                stukSpeelgoed.setMaxLeeftijd((short)0);
            stukSpeelgoed.setOnderdelen(Short.parseShort(resultaat.get(0).get(ONDERDELEN)));
        }
        return stukSpeelgoed;
    }

    // Een stuk speelgoed wijzigen in de database
    public int wijzigSpeelgoed(Speelgoed hetSpeelgoed) {

        if (hetSpeelgoed.getMaxLeeftijd() > 0) {
            parentMenu.databaseConnectie.prepareStatement("UPDATE SPEELGOED SET " +
                "naam = ?, omschrijving = ?, aankoopdatum = ?, " +
                "aankoopbedrag = ?, minleeftijd = ?, " +
                "maxleeftijd = ?, onderdelen = ? " +
                "WHERE code = ?;");
            parentMenu.databaseConnectie.setString(1,hetSpeelgoed.getNaam());
            parentMenu.databaseConnectie.setString(2,hetSpeelgoed.getOmschrijving());
            parentMenu.databaseConnectie.setString(3,hetSpeelgoed.getAankoopdatum());
            parentMenu.databaseConnectie.setFloat(4,hetSpeelgoed.getAankoopbedrag());
            parentMenu.databaseConnectie.setShort(5,hetSpeelgoed.getMinLeeftijd());
            parentMenu.databaseConnectie.setShort(6,hetSpeelgoed.getMaxLeeftijd());
            parentMenu.databaseConnectie.setShort(7,hetSpeelgoed.getOnderdelen());
            parentMenu.databaseConnectie.setString(8,hetSpeelgoed.getCode());
        }
        else {
            parentMenu.databaseConnectie.prepareStatement("UPDATE SPEELGOED SET " +
                "naam = ?, omschrijving = ?, aankoopdatum = ?, " +
                "aankoopbedrag = ?, minleeftijd = ?, " +
                "maxleeftijd = null, onderdelen = ? " +
                "WHERE code = ?;");
            parentMenu.databaseConnectie.setString(1,hetSpeelgoed.getNaam());
            parentMenu.databaseConnectie.setString(2,hetSpeelgoed.getOmschrijving());
            parentMenu.databaseConnectie.setString(3,hetSpeelgoed.getAankoopdatum());
            parentMenu.databaseConnectie.setFloat(4,hetSpeelgoed.getAankoopbedrag());
            parentMenu.databaseConnectie.setShort(5,hetSpeelgoed.getMinLeeftijd());
            parentMenu.databaseConnectie.setShort(6,hetSpeelgoed.getOnderdelen());
            parentMenu.databaseConnectie.setString(7,hetSpeelgoed.getCode());
        }
        return parentMenu.databaseConnectie.update();
    }

    // Een stuk speelgoed verwijderen uit de database
    public int verwijderSpeelgoed(String deSpeelgoedCode) {
        parentMenu.databaseConnectie.prepareStatement("DELETE FROM SPEELGOED " +
                "WHERE code = ?;");
        parentMenu.databaseConnectie.setString(1,deSpeelgoedCode);

        return parentMenu.databaseConnectie.update();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jLabel2 = new javax.swing.JLabel();
        jLabelSpeelgoedCode = new javax.swing.JLabel();
        jTextSpeelgoedCode = new javax.swing.JTextField();
        jLabelNaam = new javax.swing.JLabel();
        jTextNaam = new javax.swing.JTextField();
        jLabelOmschrijving = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTextOmschrijving = new javax.swing.JTextArea();
        jcbDag = new javax.swing.JComboBox();
        jLabelDatumVanAankoop = new javax.swing.JLabel();
        jcbMaand = new javax.swing.JComboBox();
        jcbJaar = new javax.swing.JComboBox();
        jLabelAankoopbedrag = new javax.swing.JLabel();
        jTextAankoopbedrag = new javax.swing.JTextField();
        jLabelLeeftijdVan = new javax.swing.JLabel();
        jComboLeeftijdVan = new javax.swing.JComboBox();
        jLabelLeeftijdTot = new javax.swing.JLabel();
        jComboLeeftijdTot = new javax.swing.JComboBox();
        jButtonOpslaanVerwijderen = new javax.swing.JButton();
        jButtonAnnuleren = new javax.swing.JButton();
        jlStatusbar = new javax.swing.JLabel();
        jLabelAantalOnderdelen = new javax.swing.JLabel();
        jTextAantalOnderdelen = new javax.swing.JTextField();
        jComboCategorie = new javax.swing.JComboBox();
        jLabelCategorie = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jLabel2.setFont(new java.awt.Font("Tahoma", 1, 24));
        jLabel2.setText("Speelgoed toevoegen");

        jLabelSpeelgoedCode.setText("Speelgoedcode");

        jTextSpeelgoedCode.setHorizontalAlignment(javax.swing.JTextField.CENTER);
        jTextSpeelgoedCode.setEnabled(false);

        jLabelNaam.setText("Naam");

        jLabelOmschrijving.setText("Omschrijving");

        jTextOmschrijving.setColumns(20);
        jTextOmschrijving.setFont(new java.awt.Font("Tahoma", 0, 11));
        jTextOmschrijving.setRows(5);
        jScrollPane1.setViewportView(jTextOmschrijving);

        jLabelDatumVanAankoop.setText("Datum van aankoop");

        jcbMaand.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jcbMaandActionPerformed(evt);
            }
        });

        jLabelAankoopbedrag.setText("Aankoopbedrag");

        jTextAankoopbedrag.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
        jTextAankoopbedrag.setText("0.00");

        jLabelLeeftijdVan.setText("Leeftijdscategorie van");

        jComboLeeftijdVan.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18" }));
        jComboLeeftijdVan.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jComboLeeftijdVanActionPerformed(evt);
            }
        });

        jLabelLeeftijdTot.setText("tot");

        jComboLeeftijdTot.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18" }));
        jComboLeeftijdTot.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jComboLeeftijdTotActionPerformed(evt);
            }
        });

        jButtonOpslaanVerwijderen.setText("Opslaan");
        jButtonOpslaanVerwijderen.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonOpslaanVerwijderenActionPerformed(evt);
            }
        });

        jButtonAnnuleren.setText("Annuleren");
        jButtonAnnuleren.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonAnnulerenActionPerformed(evt);
            }
        });

        jlStatusbar.setBorder(javax.swing.BorderFactory.createEtchedBorder());

        jLabelAantalOnderdelen.setText("Aantal onderdelen");

        jTextAantalOnderdelen.setHorizontalAlignment(javax.swing.JTextField.RIGHT);

        jComboCategorie.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Kies...", "B = Beweging", "C = Constructie", "E = Expressie", "F = Fantasie", "G = Gezelschapsspellen", "L= Leer/ Educatief speelgoed", "M= Minicomputerspelletjes", "P = Puzzels", "V = Verjaardag (Verkleedkisten)", "Z = Zintuiglijk" }));
        jComboCategorie.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jComboCategorieActionPerformed(evt);
            }
        });

        jLabelCategorie.setText("Categorie");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                        .addComponent(jLabelLeeftijdVan)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(jComboLeeftijdVan, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(jLabelLeeftijdTot)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(jComboLeeftijdTot, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(18, 18, 18)
                                .addComponent(jLabelAantalOnderdelen)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(jTextAantalOnderdelen, javax.swing.GroupLayout.PREFERRED_SIZE, 69, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(jButtonOpslaanVerwijderen, javax.swing.GroupLayout.PREFERRED_SIZE, 155, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(jButtonAnnuleren, javax.swing.GroupLayout.PREFERRED_SIZE, 155, javax.swing.GroupLayout.PREFERRED_SIZE))))
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                        .addComponent(jLabelDatumVanAankoop)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jcbDag, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jcbMaand, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jcbJaar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(jLabelAankoopbedrag)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTextAankoopbedrag, javax.swing.GroupLayout.DEFAULT_SIZE, 208, Short.MAX_VALUE))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jLabel2)
                        .addGap(134, 134, 134))
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                        .addComponent(jLabelOmschrijving)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 440, Short.MAX_VALUE))
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                        .addComponent(jLabelNaam)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTextNaam, javax.swing.GroupLayout.DEFAULT_SIZE, 474, Short.MAX_VALUE))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jLabelCategorie)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jComboCategorie, 0, 320, Short.MAX_VALUE)
                        .addGap(18, 18, 18)
                        .addComponent(jLabelSpeelgoedCode)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTextSpeelgoedCode, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addGap(18, 18, 18))
            .addComponent(jlStatusbar, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 533, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel2)
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jTextSpeelgoedCode, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabelSpeelgoedCode)
                    .addComponent(jLabelCategorie)
                    .addComponent(jComboCategorie, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabelNaam)
                    .addComponent(jTextNaam, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabelOmschrijving)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabelDatumVanAankoop)
                    .addComponent(jcbDag, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jcbMaand, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jcbJaar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabelAankoopbedrag)
                    .addComponent(jTextAankoopbedrag, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabelLeeftijdVan)
                    .addComponent(jComboLeeftijdVan, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabelLeeftijdTot)
                    .addComponent(jComboLeeftijdTot, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabelAantalOnderdelen)
                    .addComponent(jTextAantalOnderdelen, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jButtonOpslaanVerwijderen)
                    .addComponent(jButtonAnnuleren))
                .addGap(18, 18, 18)
                .addComponent(jlStatusbar, javax.swing.GroupLayout.DEFAULT_SIZE, 15, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jButtonOpslaanVerwijderenActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonOpslaanVerwijderenActionPerformed
                // In deze array worden leden opgeslagen die voldoen aan de
        // zoekcriteria.
        ArrayList<ArrayList<String>> speelgoedLijst = new ArrayList();
        String deDatum = null;
        float hetBedrag = (float)0.00;

        if (jButtonOpslaanVerwijderen.getText().equals("Opslaan")) {

            // Controleer of alle verplichte velden zijn ingevuld
            if (jTextNaam.getText().isEmpty()
                    || jTextAankoopbedrag.getText().isEmpty()
                    || jTextAantalOnderdelen.getText().isEmpty()
                    || (jComboCategorie.getSelectedIndex() == 0 && soortBewerking == BeheerMenu.BewerkFunctie.TOEVOEGEN)) {
                parentMenu.setStatusbarText(jlStatusbar, "Niet alle verplichte velden zijn " +
                        "ingevuld.", Color.RED);
                return;
            }

            // Controleer of het aankoopbedrag een geldig bedrag is
            if (!parentMenu.isTekstEenBedrag(jTextAankoopbedrag.getText())) {
                parentMenu.setStatusbarText(jlStatusbar, "Het aankoopbedrag is geen geldig bedrag," +
                        "voer een nieuw bedrag in.", Color.RED);
                return;
            } else {
                hetBedrag = parentMenu.zetTekstOmInBedrag(jTextAankoopbedrag.getText());
            }

            // Controleer of het aantal onderdelen numeriek is
            if(!parentMenu.isTekstNumeriek(jTextAantalOnderdelen.getText())) {
                parentMenu.setStatusbarText(jlStatusbar, "Het aantal onderdelen moet numeriek " +
                        "zijn, voer een nieuw aantal in.", Color.RED);
                return;
            }

            deDatum = parentMenu.maakDatumString(jcbDag, jcbMaand, jcbJaar);
            if (deDatum == null) {
                parentMenu.setStatusbarText(jlStatusbar, "Ongeldige aankoopdatum", Color.RED);
                return;
            }

            // Sla de gegevens op in de database indien alle velden correct
            // zijn ingevuld.
                hetSpeelgoed.setCode(jTextSpeelgoedCode.getText());
                hetSpeelgoed.setNaam(jTextNaam.getText());
                hetSpeelgoed.setOmschrijving(jTextOmschrijving.getText());
                hetSpeelgoed.setAankoopdatum(deDatum);
                hetSpeelgoed.setAankoopbedrag(hetBedrag);
                hetSpeelgoed.setMinLeeftijd((short)jComboLeeftijdVan.getSelectedIndex());
                hetSpeelgoed.setMaxLeeftijd((short)jComboLeeftijdTot.getSelectedIndex());
                hetSpeelgoed.setOnderdelen((short)Integer.parseInt(jTextAantalOnderdelen.getText()));

                // Op basis van de soort bewerking wordt een stuk speelgoed aan
                // de database toegevoegd of wordt een lid in de database
                // gewijzigd.
                switch(soortBewerking) {
                    case TOEVOEGEN:
                        if (insertSpeelgoed(hetSpeelgoed) != -1)
                            parentMenu.setStatusbarText(parentMenu.jlStatusbar, "Het stuk speelgoed is toegevoegd", Color.BLACK);
                        else
                            parentMenu.setStatusbarText(parentMenu.jlStatusbar, "Het stuk speelgoed kan niet worden toegevoegd", Color.RED);
                        break;
                    case WIJZIGEN:
                        if (wijzigSpeelgoed(hetSpeelgoed) != -1)
                            parentMenu.setStatusbarText(parentMenu.jlStatusbar, "Het stuk speelgoed is gewijzigd", Color.BLACK);
                        else
                            parentMenu.setStatusbarText(parentMenu.jlStatusbar, "Het stuk speelgoed kan niet worden gewijzgd", Color.RED);
                        break;
                }
                this.setVisible(false);
                parentMenu.setVisible(true);
        }

        else if (jButtonOpslaanVerwijderen.getText().equals("Zoeken")) {

            // Op basis van de ingevulde velden wordt een zoekstring
            // gegenereerd die wordt doorgegeven aan de database.
            String zoekString = "";

            // Als de speelgoedcode is ingevuld
            if (!jTextSpeelgoedCode.getText().isEmpty()) {
                zoekString = zoekString + "code like \"" + jTextSpeelgoedCode.getText() + "%\"";
            }

            // Als de naam is ingevuld en geen cijfers bevat
            if (!jTextNaam.getText().isEmpty()) {
                if (zoekString.isEmpty()) {
                    zoekString = zoekString + "naam like \"" + jTextNaam.getText() + "%\"";
                } else {
                    zoekString = zoekString + " AND naam like \"" + jTextNaam.getText() + "%\"";
                }
            }

            // Voer de zoekopdracht uit 
            // Stel de zoekstring samen.
            // Als er geen zoekcriteria zijn opgegeven worden alle
            // lidgegevens weergegeven.
            if (zoekString.isEmpty()) {
                zoekString = "SELECT * FROM SPEELGOED";
            } else {
                // Als er wel zoekcriteria zijn opgegeven wordt er
                // gezocht met deze zoekcriteria
                zoekString = "SELECT * FROM SPEELGOED WHERE "
                        + zoekString + " ORDER BY code";
            }
            // Geef de zoekstring door aan de databaseconnectie.
            speelgoedLijst = parentMenu.databaseConnectie.query(zoekString);
            // Controleer of er leden zijn gevonden die voldoen aan de
            // zoekcriteria.
            if (speelgoedLijst != null && speelgoedLijst.size() > 0) {
                parentMenu.zoekResultaten.initialiseerZoekScherm(this, soortBewerking, speelgoedLijst);
                parentMenu.zoekResultaten.setLocationRelativeTo(null);
                parentMenu.zoekResultaten.setVisible(true);
                this.setVisible(false);
            } else {
                parentMenu.setStatusbarText(jlStatusbar, "Er is geen speelgoed gevonden dat voldoet aan de " +
                        "zoekcriteria, geef andere criteria op.", Color.RED);
            }
        }

        // Als dit een verwijderscherm is, dan wordt het lid met het lidnummer
        // zoals dat weergegeven is in het scherm verwijderd uit de database.
        else if (jButtonOpslaanVerwijderen.getText().equals("Verwijderen")) {
            if (verwijderSpeelgoed(jTextSpeelgoedCode.getText()) != -1)
                parentMenu.setStatusbarText(parentMenu.jlStatusbar, "Het stuk speelgoed is verwijderd", Color.BLACK);
            else
                parentMenu.setStatusbarText(parentMenu.jlStatusbar, "Het stuk speelgoed kan niet worden verwijderd", Color.BLACK);
            this.setVisible(false);
            parentMenu.setVisible(true);
        }
}//GEN-LAST:event_jButtonOpslaanVerwijderenActionPerformed

    private void jButtonAnnulerenActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonAnnulerenActionPerformed
        this.setVisible(false);
        parentMenu.setVisible(true);
    }//GEN-LAST:event_jButtonAnnulerenActionPerformed

    private void jComboCategorieActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboCategorieActionPerformed
        if(jComboCategorie.getSelectedIndex() > 0) {
            switch(soortBewerking) {
                case WIJZIGEN:
                case VERWIJDEREN:
                case ZOEKEN:
                    jTextSpeelgoedCode.setText(jComboCategorie.getSelectedItem().toString().substring(0, 1));
                    break;
                default:
                    jTextSpeelgoedCode.setText(jComboCategorie.getSelectedItem().toString().charAt(0) +
                            parentMenu.speelgoedCodeUitvullen((geefSpeelgoedCode
                            (jComboCategorie.getSelectedItem().toString().charAt(0)) + 1)));
            }
        } else {
            jTextSpeelgoedCode.setText("");
        }
    }//GEN-LAST:event_jComboCategorieActionPerformed

    private void jcbMaandActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jcbMaandActionPerformed
        parentMenu.setDatumVelden(jcbDag, jcbMaand, jcbJaar);
    }//GEN-LAST:event_jcbMaandActionPerformed

    private void jComboLeeftijdVanActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboLeeftijdVanActionPerformed
        int selection = jComboLeeftijdTot.getSelectedIndex();

        if (selection > 0 && jComboLeeftijdVan.getSelectedIndex() > selection) {
            jComboLeeftijdTot.setSelectedIndex(jComboLeeftijdVan.getSelectedIndex());
        }
    }//GEN-LAST:event_jComboLeeftijdVanActionPerformed

    private void jComboLeeftijdTotActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboLeeftijdTotActionPerformed
        int selection = jComboLeeftijdTot.getSelectedIndex();

        if (selection > 0 && selection < jComboLeeftijdVan.getSelectedIndex()) {
            jComboLeeftijdVan.setSelectedIndex(jComboLeeftijdTot.getSelectedIndex());
        }
    }//GEN-LAST:event_jComboLeeftijdTotActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButtonAnnuleren;
    private javax.swing.JButton jButtonOpslaanVerwijderen;
    private javax.swing.JComboBox jComboCategorie;
    private javax.swing.JComboBox jComboLeeftijdTot;
    private javax.swing.JComboBox jComboLeeftijdVan;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabelAankoopbedrag;
    private javax.swing.JLabel jLabelAantalOnderdelen;
    private javax.swing.JLabel jLabelCategorie;
    private javax.swing.JLabel jLabelDatumVanAankoop;
    private javax.swing.JLabel jLabelLeeftijdTot;
    private javax.swing.JLabel jLabelLeeftijdVan;
    private javax.swing.JLabel jLabelNaam;
    private javax.swing.JLabel jLabelOmschrijving;
    private javax.swing.JLabel jLabelSpeelgoedCode;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextField jTextAankoopbedrag;
    private javax.swing.JTextField jTextAantalOnderdelen;
    private javax.swing.JTextField jTextNaam;
    private javax.swing.JTextArea jTextOmschrijving;
    private javax.swing.JTextField jTextSpeelgoedCode;
    private javax.swing.JComboBox jcbDag;
    private javax.swing.JComboBox jcbJaar;
    private javax.swing.JComboBox jcbMaand;
    private javax.swing.JLabel jlStatusbar;
    // End of variables declaration//GEN-END:variables

    private void setVeldenVanuitBeheerMenu() {
        parentMenu.setDatumVandaag(jcbDag, jcbMaand, jcbJaar);
        veldenLeeg();
        switch(soortBewerking) {
            case TOEVOEGEN:
                jLabel2.setText("Speelgoed toevoegen");
                jTextSpeelgoedCode.setEnabled(false);
                jTextNaam.setEnabled(true);
                jTextOmschrijving.setEnabled(true);
                jcbDag.setEnabled(true);
                jcbMaand.setEnabled(true);
                jcbJaar.setEnabled(true);
                jTextAankoopbedrag.setEnabled(true);
                jComboLeeftijdVan.setEnabled(true);
                jComboLeeftijdTot.setEnabled(true);
                jComboCategorie.setEnabled(true);
                jTextAantalOnderdelen.setEnabled(true);
                jLabelCategorie.setText("Categorie*");
                jLabelNaam.setText("Naam*");
                jLabelDatumVanAankoop.setText("Datum van aankoop*");
                jLabelAankoopbedrag.setText("Aankoopbedrag*");
                jLabelLeeftijdVan.setText("Leeftijdscategorie van*");
                jLabelAantalOnderdelen.setText("Aantal onderdelen*");
                jButtonOpslaanVerwijderen.setText("Opslaan");
                parentMenu.setStatusbarText(jlStatusbar, "Velden met een * zijn verplicht.", Color.BLACK);
                break;
            case WIJZIGEN:
            case VERWIJDEREN:
            case ZOEKEN:
                jLabel2.setText("Speelgoed zoeken");
                jTextSpeelgoedCode.setEnabled(true);
                jTextNaam.setEnabled(true);
                jTextOmschrijving.setEnabled(false);
                jcbDag.setEnabled(false);
                jcbMaand.setEnabled(false);
                jcbJaar.setEnabled(false);
                jTextAankoopbedrag.setEnabled(false);
                jComboLeeftijdVan.setEnabled(false);
                jComboLeeftijdTot.setEnabled(false);
                jComboCategorie.setEnabled(true);
                jTextAantalOnderdelen.setEnabled(false);
                jLabelCategorie.setText("Categorie");
                jLabelNaam.setText("Naam");
                jLabelDatumVanAankoop.setText("Datum van aankoop");
                jLabelAankoopbedrag.setText("Aankoopbedrag");
                jLabelLeeftijdVan.setText("Leeftijdscategorie van");
                jLabelAantalOnderdelen.setText("Aantal onderdelen");
                jButtonOpslaanVerwijderen.setText("Zoeken");
                parentMenu.setStatusbarText(jlStatusbar, "Geef een of meerdere zoekcriteria op.", Color.BLACK);
                break;
        }
    }

    private void setVeldenVanuitZoekScherm() {
        //setDatumVandaag();
        switch(soortBewerking) {
            case WIJZIGEN:
                jLabel2.setText("Speelgoed wijzigen");
                jComboCategorie.setEnabled(false);
                jTextSpeelgoedCode.setEnabled(false);
                jTextNaam.setEnabled(true);
                jTextOmschrijving.setEnabled(true);
                jcbDag.setEnabled(true);
                jcbMaand.setEnabled(true);
                jcbJaar.setEnabled(true);
                jTextAankoopbedrag.setEnabled(true);
                jComboLeeftijdVan.setEnabled(true);
                jComboLeeftijdTot.setEnabled(true);
                jTextAantalOnderdelen.setEnabled(true);
                jLabelNaam.setText("Naam*");
                jLabelDatumVanAankoop.setText("Datum van aankoop*");
                jLabelAankoopbedrag.setText("Aankoopbedrag*");
                jLabelLeeftijdVan.setText("Leeftijdscategorie van*");
                jLabelAantalOnderdelen.setText("Aantal onderdelen*");
                jButtonOpslaanVerwijderen.setText("Opslaan");
                parentMenu.setStatusbarText(jlStatusbar, "Wijzig een of meer velden en klik op Opslaan, velden met een * zijn verplicht.", Color.BLACK);
                break;
            case VERWIJDEREN:
                jLabel2.setText("Speelgoed verwijderen");
                jTextSpeelgoedCode.setEnabled(false);
                jTextNaam.setEnabled(false);
                jTextOmschrijving.setEnabled(false);
                jcbDag.setEnabled(false);
                jcbMaand.setEnabled(false);
                jcbJaar.setEnabled(false);
                jTextAankoopbedrag.setEnabled(false);
                jComboCategorie.setEnabled(false);
                jComboLeeftijdVan.setEnabled(false);
                jComboLeeftijdTot.setEnabled(false);
                jTextAantalOnderdelen.setEnabled(false);
                jLabelNaam.setText("Naam");
                jLabelDatumVanAankoop.setText("Datum van aankoop");
                jLabelAankoopbedrag.setText("Aankoopbedrag");
                jLabelLeeftijdVan.setText("Leeftijdscategorie van");
                jLabelAantalOnderdelen.setText("Aantal onderdelen");
                jButtonOpslaanVerwijderen.setText("Verwijderen");
                parentMenu.setStatusbarText(jlStatusbar, "Klik op Verwijderen om het speelgoed te verwijderen.", Color.BLACK);
        }
    }

    // Vul alle velden met de gegevens van een stuk speelgoed
    private void invoerVeldenVullen(String deSpeelgoedCode) {
        String datum;

        // Haal een lid met een bepaald lidnummer op uit de database en sla
        // deze op in een lid object.
        hetSpeelgoed = geefSpeelgoed(deSpeelgoedCode);

        // Vul alle velden van het scherm met de gegeven van het lid.

        for (int i = 1; i < jComboCategorie.getItemCount(); ++i) {
            if (((String)jComboCategorie.getItemAt(i)).charAt(0) == Character.toUpperCase(deSpeelgoedCode.charAt(0))) {
                jComboCategorie.setSelectedIndex(i);
                break;
            }
        }
        jTextSpeelgoedCode.setText(hetSpeelgoed.getCode());
        jTextNaam.setText(hetSpeelgoed.getNaam());
        jTextOmschrijving.setText(hetSpeelgoed.getOmschrijving());
        jTextAankoopbedrag.setText(Float.toString(hetSpeelgoed.getAankoopbedrag()));
        jComboLeeftijdVan.setSelectedIndex(hetSpeelgoed.getMinLeeftijd());
        jComboLeeftijdTot.setSelectedIndex(hetSpeelgoed.getMaxLeeftijd());
        jTextAantalOnderdelen.setText(Short.toString(hetSpeelgoed.getOnderdelen()));

        // Haal de dag, maand en jaar gegevens uit de datumstring en gebruik dit
        // om de comboboxen in te stellen.
        datum = hetSpeelgoed.getAankoopdatum();

        jcbDag.setSelectedIndex(Integer.parseInt(datum.substring(8, 10)));
        jcbMaand.setSelectedIndex(Integer.parseInt(datum.substring(5, 7)));
        jcbJaar.setSelectedItem(datum.substring(0, 4));
    }

    private void veldenLeeg() {
        jTextSpeelgoedCode.setText("");
        jComboCategorie.setSelectedIndex(0);
        jTextNaam.setText("");
        jTextOmschrijving.setText("");
        jTextAantalOnderdelen.setText("");
        jComboLeeftijdVan.setSelectedIndex(0);
        jComboLeeftijdTot.setSelectedIndex(0);
        jTextAankoopbedrag.setText("");
    }

    // Hier wordt een verwijzing naar het beheermenu opgenomen zodat we 
    // vanuit dit scherm terug kunnen keren naar het beheermenu
    private BeheerMenu parentMenu;

    // Hier wordt de enumeratie opgeslagen die bepaald welke functie wordt
    // uitgevoerd zodra men een object heeft geselecteerd in het zoekscherm.
    private BeheerMenu.BewerkFunctie soortBewerking;

    // Dit speelgoed object wordt gebruikt om de velden te vullen met de
    // gegevens, of om de gegevens uit de velden in op te slaan.
    private Speelgoed hetSpeelgoed = new Speelgoed();
}
